home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 46 / Amiga Format CD46 (1999-10-20)(Future Publishing)(GB)[!][issue 1999-12].iso / -in_the_mag- / reader_requests / amiga-e / examples / showimg.e < prev    next >
Text File  |  1999-09-13  |  4KB  |  139 lines

  1. /*
  2. **  Original C Code written by Stefan Stuntz
  3. **
  4. **  Translation into E by Klaus Becker
  5. **
  6. **  All comments are from the C-Source
  7. */
  8.  
  9. OPT PREPROCESS
  10.  
  11. MODULE 'utility/tagitem'
  12. MODULE 'libraries/gadtools'
  13. MODULE 'muimaster','libraries/mui','libraries/muip',
  14.        'mui/muicustomclass','amigalib/boopsi',
  15.        'intuition/classes','intuition/classusr',
  16.        'intuition/screens','intuition/intuition'
  17.  
  18. /*
  19. ** We want our images displayed in a group with five columns.
  20. */
  21.  
  22. #define cols 4
  23. #define startimg 11
  24.  
  25. /*
  26. ** This is a image object at its standard size.
  27. */
  28.  
  29. #define FixedImg(x) ImageObject,\
  30.   ButtonFrame,\
  31.   MUIA_InputMode, MUIV_InputMode_RelVerify,\
  32.   MUIA_Image_FreeHoriz, FALSE,\
  33.   MUIA_Image_FreeVert, FALSE,\
  34.   MUIA_Image_Spec, x,\
  35.   MUIA_Background, MUII_BACKGROUND,\
  36.   End
  37.  
  38.  
  39. /*
  40. ** This is a resizable image.
  41. ** Since the user might have configured a fixed size image,
  42. ** we need to enclose our image in groups of spacing objects
  43. ** to make it centered. The spacing objects have a very little
  44. ** weight, so the images will get every pixel they want.
  45. */
  46.  
  47. #define sp            RectangleObject, MUIA_Weight, 1, End
  48. #define hcenter(obj)  HGroup, Child, sp, Child, obj, Child, sp, End
  49. #define vcenter(obj)  VGroup, Child, sp, Child, obj, Child, sp, End
  50. #define hvcenter(obj) hcenter(vcenter(obj))
  51.  
  52. #define FreeImg(x) hcenter(vcenter(xFreeImg(x)))
  53.  
  54. #define xFreeImg(x) ImageObject,\
  55.   ButtonFrame,\
  56.   MUIA_InputMode, MUIV_InputMode_RelVerify,\
  57.   MUIA_Image_FreeHoriz, MUI_TRUE,\
  58.   MUIA_Image_FreeVert, MUI_TRUE,\
  59.   MUIA_Image_Spec, x,\
  60.   MUIA_Background, MUII_BACKGROUND,\
  61.   End
  62.  
  63. PROC main() HANDLE
  64.   DEF signal, app, wi_Master
  65.   DEF fixGroup,freeGroup,i
  66.  
  67.   IF (muimasterbase:=OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN))=NIL THEN
  68.     Raise('failed to open muimaster.library')
  69.  
  70.   /*
  71.   ** Create the application.
  72.   ** Note that we generate two empty groups without children.
  73.   ** These children will be added later with OM_ADDMEMBER.
  74.   */
  75.  
  76.   app := ApplicationObject,
  77.     MUIA_Application_Title      , 'ShowImg',
  78.     MUIA_Application_Version    , '$VER: ShowImg 10.11 (23.12.94)',
  79.     MUIA_Application_Copyright  , 'c1992/93, Stefan Stuntz',
  80.     MUIA_Application_Author     , 'Stefan Stuntz & Klaus Becker',
  81.     MUIA_Application_Description, 'Show MUI standard images',
  82.     MUIA_Application_Base       , 'SHOWIMG',
  83.     SubWindow, wi_Master := WindowObject,
  84.       MUIA_Window_ID, "MAIN",
  85.       MUIA_Window_Title, 'MUI Standard Images',
  86.       WindowContents, HGroup,
  87.         Child, VGroup,
  88.           Child, VSpace(0),
  89.           Child, fixGroup := ColGroup(cols), GroupFrameT('Minimum Size'), End,
  90.           Child, VSpace(0),
  91.         End,
  92.         Child, freeGroup := ColGroup(cols), GroupFrameT('Free Size'), End,
  93.       End,
  94.     End,
  95.   End
  96.  
  97.   IF app=NIL THEN Raise('Failed to create Application.')
  98.  
  99.   /*
  100.   ** No we insert the image elements in our groups.
  101.   */
  102.  
  103.   FOR i:=0 TO MUII_Count-startimg-1
  104.     doMethodA(fixGroup,[OM_ADDMEMBER,FixedImg(i+startimg)])
  105.     doMethodA(freeGroup,[OM_ADDMEMBER,FreeImg(i+startimg)])
  106.   ENDFOR
  107.  
  108.   /*
  109.   ** Append some empty objects to make our columnized
  110.   ** group contain exactly cols*rows elements.
  111.   */
  112.  
  113.   WHILE (Mod(i,cols))
  114.     doMethodA(fixGroup,[OM_ADDMEMBER,HVSpace])
  115.     doMethodA(freeGroup,[OM_ADDMEMBER,HVSpace])
  116.     i++
  117.   ENDWHILE
  118.  
  119.   /*
  120.   ** Simplest possible MUI input loop.
  121.   */
  122.  
  123.   doMethodA(wi_Master,[MUIM_Notify,MUIA_Window_CloseRequest,MUI_TRUE,app,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit])
  124.     
  125.   set(wi_Master,MUIA_Window_Open,MUI_TRUE)
  126.  
  127.   WHILE (doMethodA(app,[MUIM_Application_Input,{signal}]) <> MUIV_Application_ReturnID_Quit)
  128.     IF (signal) THEN Wait(signal)
  129.   ENDWHILE
  130.   
  131.   set(wi_Master,MUIA_Window_Open,FALSE)
  132.  
  133. EXCEPT DO
  134.   IF app THEN Mui_DisposeObject(app)
  135.   IF muimasterbase THEN CloseLibrary(muimasterbase)
  136.   IF exception THEN WriteF('\s\n',exception)
  137. ENDPROC
  138.  
  139.